(function($){ 'use strict'; var pluginName="storeLocatorSingle", defaults={ map_container: "#store_locator_single_map", map_min_height: 300, earthRadi: { mi: 3963.1676, km: 6378.1, ft: 20925524.9, mt: 6378100, "in": 251106299, yd: 6975174.98, fa: 3487587.49, na: 3443.89849, ch: 317053.408, rd: 1268213.63, fr: 31705.3408 }, }; function Plugin(element, options){ this.element=element; this.settings=$.extend({}, defaults, options); this._defaults=defaults; this.settings.lat=$(element).data('lat'); this.settings.lng=$(element).data('lng'); this._name=pluginName; this.init(); } $.extend(Plugin.prototype, { init: function(){ var that=this; this.window=$(window); this.documentHeight=$(document).height(); this.windowHeight=this.window.height(); this.settings.mapDefaultZoom=parseInt(that.settings.mapDefaultZoom); this.templateCache={}; that.initStoreLocatorSingle(); }, initStoreLocatorSingle: function(){ var that=this; that.initMap(function(){ that.createMarker(); }); }, initMap: function(callback){ var mapContainer=$(this.settings.map_container); var mapDefaultZoom=this.settings.mapDefaultZoom; var mapDefaultType=this.settings.mapDefaultType; var mapDefaultLat=Number(this.settings.lat); var mapDefaultLng=Number(this.settings.lng); var mapStyling=this.settings.mapStyling; if(!this.isEmpty(mapStyling)){ mapStyling=JSON.parse(mapStyling); }else{ mapStyling=""; } this.map=new google.maps.Map(mapContainer[0], { zoom: mapDefaultZoom, center: new google.maps.LatLng(mapDefaultLat, mapDefaultLng), mapTypeId: google.maps.MapTypeId[mapDefaultType], scrollwheel: false, styles: mapStyling }); callback(); }, createMarker: function(){ var marker; var store={}; store.map=this.map; store.position=new google.maps.LatLng(this.settings.lat, this.settings.lng); store.icon=this.settings.mapDefaultIcon; marker=new google.maps.Marker(store); marker.setMap(this.map); }, isEmpty: function(obj){ if(obj==null) return true; if(obj.length > 0) return false; if(obj.length===0) return true; for (var key in obj){ if(hasOwnProperty.call(obj, key)) return false; } return true; }, sprintf: function parse(str){ var args=[].slice.call(arguments, 1), i=0; return str.replace(/%s/g, function(){ return args[i++]; }); }, getCookie: function(cname){ var name=cname + "="; var ca=document.cookie.split(';'); for(var i=0; i 0){ for (i; i < storesLength; i++){ store=stores[i]; store.map=this.map; this.store=store; store.position=new google.maps.LatLng(store.lat, store.lng); if(!that.isEmpty(store.ic)){ store.icon=store.ic; }else if(!that.isEmpty(that.settings.store_locator_category_icon)){ store.icon=that.settings.store_locator_category_icon; }else{ store.icon=that.settings.mapDefaultIcon; } marker=new google.maps.Marker(store); this.markers.push(marker); if(this.settings.infowindowEnabled==="1"){ this.createInfowindow(marker, map, infowindow, store); }} }}, createInfowindow: function(marker, map, infowindow, store){ var that=this; var infowindowLinkAction=this.settings.infowindowLinkAction; store.infowindowAction=store.gu; if(infowindowLinkAction=="web"){ store.infowindowAction=store.we; } if(infowindowLinkAction=="tel"){ store.infowindowAction='tel:' + store.te; } if(infowindowLinkAction=="email"){ store.infowindowAction='mailto:' + store.em; } var infowindowLinkActionNewTab=''; if(this.settings.infowindowLinkActionNewTab=="1"){ infowindowLinkActionNewTab=' target="_blank" '; } var premiumClass=''; if(store.pr==="1"){ premiumClass=' store-locator-is-premium'; } if(!that.isEmpty(that.settings.showContactStorePage)){ var arr=that.settings.showContactStorePage.split('?'); if(arr.length > 1&&arr[1]!==''){ var showContactStorePage=that.settings.showContactStorePage + '&'; }else{ var showContactStorePage=that.settings.showContactStorePage + '?'; }} var content='
' + '
'; if(this.settings.infowindowLinkAction!=="none"){ content +='' + '

' + store.na + '

' + '
'; }else{ content +='

' + store.na + '

'; } if(!that.isEmpty(store.rt)){ var rating=Math.round(store.rt); if(that.settings.showRatingLinkToForm=="1"){ content +=''; } content +='
'; for (var i=0; i < store.rt; i++){ content +=''; } content +='(' + rating +' / 5)
'; if(that.settings.showRatingLinkToForm=="1"){ content +='
'; }} content += !that.isEmpty(store.dc) ? '' + that.settings.showDistanceText + ': ' + store.dc + '
':''; content +='

'; if(that.settings.showAddressStyle=="american"){ content += !that.isEmpty(store.st) ? '' + store.st + '
':''; content += !that.isEmpty(store.ct) ? '' + store.ct + ', ':''; content += !that.isEmpty(store.rg) ? '' + store.rg + ' ':''; content += !that.isEmpty(store.zp) ? '' + store.zp + '
':''; content += !that.isEmpty(store.co) ? '' + store.co + '':''; }else{ content += !that.isEmpty(store.st) ? '' + store.st + '
':''; content += !that.isEmpty(store.zp) ? '' + store.zp + '':''; content += !that.isEmpty(store.ct) ? '' + store.ct + '
':''; content += !that.isEmpty(store.rg) ? '' + store.rg + '':''; content += !that.isEmpty(store.co) ? '' + store.co + '':''; } content +='

' + '

'; content += !that.isEmpty(store.te) ? '' + that.settings.showTelephoneText + ': ' + store.te + '
':''; content += !that.isEmpty(store.em) ? '' + that.settings.showEmailText + ': ' + store.em + '
':''; content += !that.isEmpty(store.mo) ? '' + that.settings.showMobileText + ': ' + store.mo + '
':''; content += !that.isEmpty(store.fa) ? '' + that.settings.showFaxText + ': ' + store.fa + '
':''; content += !that.isEmpty(store.we) ? '' + that.settings.showWebsiteText + ': ' + store.we + '
':''; content +='

' + '

'; if(that.settings.showGetDirectionEmptySource=="1"){ content += !that.isEmpty(store.lat) ? ' ' + that.settings.showGetDirectionText+'':''; }else{ content += !that.isEmpty(store.lat) ? ' ' + that.settings.showGetDirectionText+'':''; } content += !that.isEmpty(that.settings.showContactStorePage) ? ' ' + that.settings.showContactStoreText+'':''; content += !that.isEmpty(store.te) ? ' ' + that.settings.showCallNowText+'':''; content += !that.isEmpty(store.we) ? ' ' + that.settings.showVisitWebsiteText+'':''; content += !that.isEmpty(store.em) ? ' ' + that.settings.showWriteEmailText+'':''; content += !that.isEmpty(that.settings.showVisitStore) ? ' ' + that.settings.showVisitStoreText+'':''; content +='

' + '
'; content += !that.isEmpty(store.im) ? '
':''; if(!that.isEmpty(store.op)){ content +='
' + that.createOpeningHoursTable(store.op, false)+ '
'; } if(!that.isEmpty(store.op2)){ content +='
' + that.createOpeningHoursTable(store.op2, true)+ '
'; } content += !that.isEmpty(store.de) ? '
' + '' + store.de + '' + '
':''; content +='
'; marker.addListener('click', function(){ if(!that.isEmpty(store.ic)){ this.setIcon(store.ic); }else if(!that.isEmpty(that.settings.store_locator_category_icon)){ this.setIcon(that.settings.store_locator_category_icon); }else{ this.setIcon(that.settings.mapDefaultIconHover); } infowindow.setContent(content); infowindow.open(map, this); if(that.settings.mapPanToOnHover=="1"){ that.map.panTo(this.getPosition()); } google.maps.event.addListener(map, 'click', function(){ infowindow.close(); }); google.maps.event.addListener(that.radiusCircle, 'click', function(){ infowindow.close(); }); }); if(that.settings.infowindowOpenOnMouseover=="1"){ marker.addListener('mouseover', function(){ if(that.settings.infowindowCheckClosed=="1"){ if(!that.isInfoWindowOpen(infowindow)){ google.maps.event.trigger(this, 'click'); }}else{ google.maps.event.trigger(this, 'click'); }}); } marker.addListener('mouseout', function(){ if(!that.isEmpty(store.ic)){ this.setIcon(store.ic); }else if(!that.isEmpty(that.settings.store_locator_category_icon)){ this.setIcon(that.settings.store_locator_category_icon); }else{ this.setIcon(that.settings.mapDefaultIcon); }}); }, createResultList: function(stores){ var that=this; var storesLength=Object.keys(stores).length; var resultList=$(this.settings.result_list); var resultListIconEnabled=this.settings.resultListIconEnabled; var resultListIcon=this.settings.resultListIcon; var resultListIconSize=this.settings.resultListIconSize; var resultListIconColor=this.settings.resultListIconColor; var resultListPremiumIconEnabled=this.settings.resultListPremiumIconEnabled; var resultListPremiumIcon=this.settings.resultListPremiumIcon; var resultListPremiumIconSize=this.settings.resultListPremiumIconSize; var resultListPremiumIconColor=this.settings.resultListPremiumIconColor; var resultListLinkAction=this.settings.resultListLinkAction; var store; var premiumClass; var i=0; var content; var filterBadges; if(!that.isEmpty(that.settings.showContactStorePage)){ var arr=that.settings.showContactStorePage.split('?'); if(arr.length > 1&&arr[1]!==''){ var showContactStorePage=that.settings.showContactStorePage + '&'; }else{ var showContactStorePage=that.settings.showContactStorePage + '?'; }} resultList.html(''); if(storesLength > 0){ for (i; i < storesLength; i++){ store=stores[i]; content=''; premiumClass=''; if(store.pr==="1"){ premiumClass=' store-locator-is-premium'; } if(resultListIconEnabled==="1"){ content +='
' + '' + '
' + '
'; }else if(that.settings.showImage=="1"&&store.im){ content +='
'; content += !that.isEmpty(store.im) ? '':''; content +='
'; content +='
'; }else{ content +='
'; } var resultListLinkAction=this.settings.resultListLinkAction; store.resultListLinkAction=store.gu; if(resultListLinkAction=="web"){ store.resultListLinkAction=store.we; } if(resultListLinkAction=="tel"){ store.resultListLinkAction='tel:' + store.te; } if(resultListLinkAction=="email"){ store.resultListLinkAction='mailto:' + store.em; } var resultListLinkActionNewTab=''; if(this.settings.resultListLinkActionNewTab=="1"){ resultListLinkActionNewTab=' target="_blank" '; } var name=""; if(this.settings.resultListLinkAction!=="none"){ name +='' + '

' + store.na + '

' + '
'; }else{ name +='

' + store.na + '

'; } if(!that.isEmpty(store.rt)){ var rating=Math.round(store.rt); if(that.settings.showRatingLinkToForm=="1"){ name +=''; } name +='
'; for (var i=0; i < store.rt; i++){ name +=''; } name +='
'; if(that.settings.showRatingLinkToForm=="1"){ name +='
'; }} name += !that.isEmpty(store.dc) ? '' + that.settings.showDistanceText + ': ' + store.dc + '
':''; filterBadges=""; if(!that.isEmpty(store.fi)){ $.each(store.fi, function(i, item){ filterBadges +=that.createBadge(item); }); } if(!that.isEmpty(store.ca)){ if(that.settings.showFilterCategoriesAsImage=="1"){ filterBadges +='

'; $.each(store.ca, function(i, item){ filterBadges +=''; }); filterBadges +='

'; }else{ $.each(store.ca, function(i, item){ filterBadges +=that.createBadge(item); }); }} var filters=""; filters += !that.isEmpty(filterBadges) ? '

' + filterBadges + '

':''; var address=""; address +='

'; if(that.settings.showAddressStyle=="american"){ address += !that.isEmpty(store.st) ? '' + store.st + '
':''; address += !that.isEmpty(store.ct) ? '' + store.ct + ', ':''; address += !that.isEmpty(store.rg) ? '' + store.rg + ' ':''; address += !that.isEmpty(store.zp) ? '' + store.zp + '
':''; address += !that.isEmpty(store.co) ? '' + store.co + '':''; }else{ address += !that.isEmpty(store.st) ? '' + store.st + '
':''; address += !that.isEmpty(store.zp) ? '' + store.zp + '':''; address += !that.isEmpty(store.ct) ? '' + store.ct + '
':''; address += !that.isEmpty(store.rg) ? '' + store.rg + '':''; address += !that.isEmpty(store.co) ? '' + store.co + '':''; } address +='

'; var contact=""; contact +='

'; contact += !that.isEmpty(store.te) ? '' + that.settings.showTelephoneText + ': ' + store.te + '
':''; contact += !that.isEmpty(store.em) ? '' + that.settings.showEmailText + ': ' + store.em + '
':''; contact += !that.isEmpty(store.mo) ? '' + that.settings.showMobileText + ': ' + store.mo + '
':''; contact += !that.isEmpty(store.fa) ? '' + that.settings.showFaxText + ': ' + store.fa + '':''; contact += !that.isEmpty(store.we) ? '' + that.settings.showWebsiteText + ': ' + store.we + '
':''; contact +='

'; contact += !that.isEmpty(store.de) ? '
' + '

' + store.de + '

' + '
':''; if(!that.isEmpty(store.op)){ contact +='
' + that.createOpeningHoursTable(store.op, false)+ '
'; } if(!that.isEmpty(store.op2)){ contact +='
' + that.createOpeningHoursTable(store.op2, true)+ '
'; } var actions=""; actions +='

'; if(that.settings.showGetDirectionEmptySource=="1"){ actions += !that.isEmpty(store.lat) ? ' ' + that.settings.showGetDirectionText+'':''; }else{ actions += !that.isEmpty(store.lat) ? ' ' + that.settings.showGetDirectionText+'':''; } actions += !that.isEmpty(that.settings.showContactStorePage) ? ' ' + that.settings.showContactStoreText+'':''; actions += !that.isEmpty(store.te) ? ' ' + that.settings.showCallNowText+'':''; actions += !that.isEmpty(store.we) ? ' ' + that.settings.showVisitWebsiteText+'':''; actions += !that.isEmpty(store.em) ? ' ' + that.settings.showWriteEmailText+'':''; actions += !that.isEmpty(that.settings.showVisitStore) ? ' ' + that.settings.showVisitStoreText+'':''; actions +=' ' + that.settings.showShowOnMapText + ''; if(that.settings.resultListItemLayout=="oneColumn"){ content +=name + filters + address + contact + actions; }else{ content +='

'; content +='
' + name + address + contact + '
'; content +='
' + filters + '
'; content +='
' + actions + '
'; content +='
'; } content +='

'; var render=''; var resultListItemColumns=that.settings.resultListItemColumns; render='
' + '
'; render +=content; if(resultListPremiumIconEnabled==="1"&&store.pr==="1"){ render +=''; } render +='
' + '
'; resultList.append(render); }}else{ if(this.settings.mapExtendRadius==="1"){ if(!$(this.settings.store_locator_filter_radius + " option:last").is(":selected")){ $(this.settings.store_locator_filter_radius + ' option:selected').prop('selected', false).next().prop('selected', 'selected').trigger('change'); }else{ this.noResults(); }}else{ this.noResults(); }} this.autoHeightMap(); this.map.setCenter(this.currentPosition); this.window.trigger('resize'); if(this.settings.resultListHover=="1"){ this.resultItemHover(); } if(this.settings.showShowOnMap=="1"){ this.showOnMap(); }}, createOpeningHoursTable: function(openingHours, two){ var that=this; var table=''; $.each(openingHours, function(i, item){ if(that.isEmpty(item)){ return true; } if(i % 2===0){ table +='
'; table +='
'; } if(two){ if(i % 2===0){ if(i==="0"){ table +=that.settings.showOpeningHours2Monday; } if(i==="2"){ table +=that.settings.showOpeningHours2Tuesday; } if(i==="4"){ table +=that.settings.showOpeningHours2Wednesday; } if(i==="6"){ table +=that.settings.showOpeningHours2Thursday; } if(i==="8"){ table +=that.settings.showOpeningHours2Friday; } if(i==="10"){ table +=that.settings.showOpeningHours2Saturday; } if(i==="12"){ table +=that.settings.showOpeningHours2Sunday; } table +=': ' + item; }else{ table +=" - " + item + ' ' + that.settings.showOpeningHours2Clock; }}else{ if(i % 2===0){ if(i==="0"){ table +=that.settings.showOpeningHoursMonday; } if(i==="2"){ table +=that.settings.showOpeningHoursTuesday; } if(i==="4"){ table +=that.settings.showOpeningHoursWednesday; } if(i==="6"){ table +=that.settings.showOpeningHoursThursday; } if(i==="8"){ table +=that.settings.showOpeningHoursFriday; } if(i==="10"){ table +=that.settings.showOpeningHoursSaturday; } if(i==="12"){ table +=that.settings.showOpeningHoursSunday; } table +=': ' + item; }else{ table +=" - " + item + ' ' + that.settings.showOpeningHoursClock; }} if(i % 2!==0){ table +='
'; table +='
'; }}); if(!that.isEmpty(table)){ if(two){ var title='

' + that.settings.showOpeningHours2Text + '

'; } else { var title='

' + that.settings.showOpeningHoursText + '

'; } table='
' + table + '
'; table=title + table; } return table; }, createBadge: function(value){ var that=this; var badgeCSS=that.slugify(value); var template='%s '; return that.sprintf(template, value); }, noResults: function(){ var resultList=$(this.settings.result_list); resultList.html(''); resultList.append('

' + this.settings.resultListNoResultsText + '

'); this.autoHeightMap(); }, resultItemHover: function(){ var that=this; var resultList=$(this.settings.result_list); $('.store_locator_result_list_item').each(function(i, item){ $(item).on('mouseenter', function(){ google.maps.event.trigger(that.markers[i], 'click'); }); $(item).on('mouseleave', function(){ google.maps.event.trigger(that.markers[i], 'mouseout'); }); }); }, showOnMap: function(){ var that=this; var resultList=$(this.settings.result_list); $('.store_locator_show_on_map').each(function(i, item){ $(item).on('click', function(){ google.maps.event.trigger(that.markers[i], 'click'); }); }); }, initFilter: function(){ var that=this; var store_locator_filter_open_close=$(this.settings.store_locator_filter_open_close); var store_locator_filter_icon=store_locator_filter_open_close.find('i'); store_locator_filter_open_close.on('click', function(){ that.maybeShowFilter(); }); that.watchRadiusSelection(); that.watchCategoriesSelection(); that.watchCheckboxFilter(); that.watchSelectFilter(); that.updateActiveFilter(); }, maybeShowFilter: function(){ var store_locator_filter_content=$(this.settings.store_locator_filter_content); var store_locator_filter_open_close=$(this.settings.store_locator_filter_open_close); var store_locator_filter_icon=store_locator_filter_open_close.find('i'); if(store_locator_filter_content.is(":hidden")){ store_locator_filter_icon.removeClass('fa-chevron-down'); store_locator_filter_icon.addClass('fa-chevron-up'); store_locator_filter_content.fadeIn(); }else{ store_locator_filter_icon.addClass('fa-chevron-down'); store_locator_filter_icon.removeClass('fa-chevron-up'); store_locator_filter_content.fadeOut(); }}, watchRadiusSelection: function(){ var that=this; var selectedRadius=$(this.settings.store_locator_filter_radius); selectedRadius.on('change', function(){ that.drawRadiusCircle(); that.updateActiveFilter(); that.getStores(); }); var predefinedRadius=that.getParameterByName('radius'); if(!that.isEmpty(predefinedRadius)){ var options=selectedRadius.find('option'); $.each(options, function(i, index){ var option=$(this); option.prop('selected', false); if(option.val()==predefinedRadius){ option.prop('selected', true); }}); }}, watchCategoriesSelection: function(){ var that=this; var selectedCategories=$(this.settings.store_locator_filter_categories); if(selectedCategories.length==0){ var selectedCategories=$('.store_locator_category_filter_image'); var selectedCategoryID=$('.store_locator_category_filter_image[data-selected="selected"]').data('category'); if(selectedCategoryID > 0){ that.categories={0: selectedCategoryID };} selectedCategories.on('click', function(){ var selected=$(this); selectedCategoryID=selected.data('category'); $('.show_for_store_category').hide(function(){ $('.show_for_store_category_' + selectedCategoryID).show(); }); selectedCategories.each(function(i, index){ $(this).removeClass('store_locator_category_filter_image_selected'); }); selected.addClass('store_locator_category_filter_image_selected'); var categoryIcon=$(selected).data('icon'); if(!that.isEmpty(categoryIcon)){ that.settings.store_locator_category_icon=categoryIcon; }else{ that.settings.store_locator_category_icon=''; } that.categories={0: selectedCategoryID }; that.updateActiveFilter(); that.getStores(); }); }else{ var selectedCategoryID=selectedCategories.find(':selected').val(); var predefinedCategory=that.getParameterByName('category'); if(!that.isEmpty(predefinedCategory)){ var tst=selectedCategories.val(predefinedCategory); selectedCategoryID=predefinedCategory; } that.categories={0: selectedCategoryID }; selectedCategories.on('change', function(){ var selected=selectedCategories.find(':selected'); selectedCategoryID=selected.val(); $('.show_for_store_category').hide(function(){ $('.show_for_store_category_' + selectedCategoryID).show(); }); var categoryIcon=$(selected).data('icon'); if(!that.isEmpty(categoryIcon)){ that.settings.store_locator_category_icon=categoryIcon; }else{ that.settings.store_locator_category_icon=''; } that.categories={0: selectedCategoryID }; that.updateActiveFilter(); that.getStores(); }); }}, watchCheckboxFilter: function(){ var that=this; var filterCheckboxes=$(this.settings.store_locator_filter_checkbox); var filterSelects=$(this.settings.store_locator_filter_select); var predefinedFilter=that.getQuerystringData('filter[]'); if(typeof predefinedFilter=='string'){ predefinedFilter={0:predefinedFilter};} if(typeof predefinedFilter=='undefined'){ predefinedFilter={};} filterCheckboxes.each(function(i, item){ var checkbox=$(item); if(!that.isEmpty(predefinedFilter)){ $.each(predefinedFilter, function(i, index){ if(checkbox.prop('name')==index){ checkbox.prop('checked', 'checked'); }}); } var isChecked=checkbox.is(":checked"); if(isChecked){ var filter=checkbox.prop("name"); that.filter[filter]=filter; }}); $(filterCheckboxes).on('change', function (){ that.filter={}; filterCheckboxes.each(function(i, item){ var checkbox=$(item); var isChecked=checkbox.is(":checked"); if(isChecked){ var filter=checkbox.prop("name"); that.filter[filter]=filter; }}); filterSelects.each(function(i, item){ var select=$(item); var isSelected=select.find(":selected"); if(isSelected){ var filter=isSelected.val(); if(!that.isEmpty(filter)){ that.filter[filter]=filter; }} }); that.updateActiveFilter(); that.getStores(); }); }, watchSelectFilter: function(){ var that=this; var filterSelects=$(this.settings.store_locator_filter_select); var filterCheckboxes=$(this.settings.store_locator_filter_checkbox); var predefinedFilter=that.getQuerystringData('filter[]'); if(typeof predefinedFilter=='string'){ predefinedFilter={0:predefinedFilter};} if(typeof predefinedFilter=='undefined'){ predefinedFilter={};} filterSelects.each(function(i, item){ var select=$(item); var options=select.find('option'); options.each(function(i, item){ var option=$(this); if(!that.isEmpty(predefinedFilter)){ $.each(predefinedFilter, function(i, index){ if(option.val()==index){ select.val(index); }}); } var isSelected=select.find(":selected"); if(isSelected){ var filter=isSelected.val(); if(!that.isEmpty(filter)){ that.filter[filter]=filter; }} }); }); $(filterSelects).on('change', function (){ that.filter={}; filterSelects.each(function(i, item){ var select=$(item); var isSelected=select.find(":selected"); if(isSelected){ var filter=isSelected.val(); if(!that.isEmpty(filter)){ that.filter[filter]=filter; }} }); filterCheckboxes.each(function(i, item){ var checkbox=$(item); var isChecked=checkbox.is(":checked"); if(isChecked){ var filter=checkbox.prop("name"); that.filter[filter]=filter; }}); that.updateActiveFilter(); that.getStores(); }); }, updateActiveFilter: function(){ var that=this; var store_locator_filter=$(this.settings.store_locator_filter); var store_locator_filter_active_filter=$(this.settings.store_locator_filter_active_filter); var selectedCategories=store_locator_filter.find('select'); var selectedCheckboxFilters=store_locator_filter.find('input:checked'); var selectedSelectFilters=store_locator_filter.find('.single_filter_filter select :selected'); var selectedImageFilters=store_locator_filter.find('.store_locator_category_filter_image_selected'); var template='%s '; var append=""; store_locator_filter_active_filter.html(''); selectedCategories.each(function(i, item){ var val=$(item).find(':selected').val(); if(val!==""){ var text=$(item).find(':selected').text(); var slug=that.slugify(text); append=append + that.sprintf(template, slug, text); }}); selectedCheckboxFilters.each(function(i, item){ var text=$(item).val(); var slug=that.slugify(text); append=append + that.sprintf(template, slug, text); }); selectedSelectFilters.each(function(i, item){ var text=$(item).val(); if(!that.isEmpty(text)){ var slug=that.slugify(text); append=append + that.sprintf(template, slug, text); }}); selectedImageFilters.each(function(i, item){ var text=$(item).text(); if(!that.isEmpty(text)){ var slug=that.slugify(text); append=append + that.sprintf(template, slug, text); }}); store_locator_filter_active_filter.html(append); }, watchResize: function(){ var store_locator_sidebar=$(this.settings.store_locator_sidebar); var store_modal_close=$(this.settings.store_modal_close); var windowWidth=this.window.width(); var top; }, watchMapDragged:function(){ var that=this; var map=that.map; var store_locator_dragged_button=$(that.settings.store_locator_dragged_button); store_locator_dragged_button.fadeOut(); google.maps.event.addListener(map, 'dragend', function(e){ store_locator_dragged_button.fadeIn(); }); }, watchDraggedButton:function (){ var that=this; var store_locator_dragged_button=$(that.settings.store_locator_dragged_button); store_locator_dragged_button.on('click', function(e){ store_locator_dragged_button.fadeOut(); var coords=that.map.getCenter(); var currentPosition=new google.maps.LatLng(coords.lat(), coords.lng()); that.setCurrentPosition(currentPosition); }); }, radiusToZoom: function(radius){ return Math.round(14-Math.log(radius)/Math.LN2); }, initForm:function(){ var that=this; var predefinedAddress=that.getParameterByName('address'); var predefinedLat=that.getParameterByName('lat'); var predefinedLng=that.getParameterByName('lng'); var addressField=$(this.settings.store_locator_form_customer_address); var address=addressField.val(); var lat, lng; if(!that.isEmpty(predefinedAddress)&&that.isEmpty(address)){ addressField.val(predefinedAddress); } if(!that.isEmpty(predefinedLat)&&!that.isEmpty(predefinedLng)){ lat=predefinedLat; lng=predefinedLng; } that.watchFormSelectField(); that.watchFormAddressField(); that.initFormAutocomplete(); that.loadFormStores(lat, lng); }, initNearestStore:function (){ var that=this; var predefinedLat=that.getParameterByName('lat'); var predefinedLng=that.getParameterByName('lng'); var lat, lng; if(navigator.geolocation){ var options={ enableHighAccuracy: true, timeout: 5000, maximumAge: 0 }; navigator.geolocation.getCurrentPosition(function(position){ var currentPosition=new google.maps.LatLng(position.coords.latitude, position.coords.longitude); jQuery.ajax({ url: that.settings.ajax_url, type: 'post', dataType: 'JSON', data: { action: 'get_nearest_store', lat: currentPosition.lat(), lng: currentPosition.lng(), day: new Date().getDay() }, success:function(response){ var nearestStoreElement=$('#store_locator_nearest_store'); var showName=nearestStoreElement.data('show-name'); var showOpening=nearestStoreElement.data('show-opening'); var textSeparator=nearestStoreElement.data('text-separator'); var nearestStoreText=''; if(showName=="1"){ nearestStoreText +=response.na + textSeparator; } if(!that.isEmpty(response.st)){ nearestStoreText +=response.st; } if(showOpening=="1"&&!that.isEmpty(response.op)){ nearestStoreText +=textSeparator + response.op + ' ' + that.settings.showOpeningHoursClock; } nearestStoreText='' + nearestStoreText + ''; nearestStoreElement.html(nearestStoreText); }, error: function(jqXHR, textStatus, errorThrown){ alert('An Error Occured: ' + jqXHR.status + ' ' + errorThrown + '! Please contact System Administrator!'); }}); }, function(error){ var nearestStoreElement=$('#store_locator_nearest_store'); var deniedText=nearestStoreElement.data('denied-text'); nearestStoreElement.html(deniedText); console.log(error); }, options); }}, loadFormStores:function(lat, lng){ var that=this; var storeSelectField=$(this.settings.store_locator_form_store_select); var addressField=$(this.settings.store_locator_form_customer_address); var address=addressField.val(); var predefinedStoreId=that.getParameterByName('store_id'); if((that.isEmpty(lat)||that.isEmpty(lng))&&!that.isEmpty(address)){ that.geocoder.geocode({ 'address': address }, function(results, status){ if(status===google.maps.GeocoderStatus.OK){ var location=results[0].geometry.location; lat=location.lat(); lng=location.lng(); that.getAllStores(lat, lng, that.storesToSelectField, { store_id:predefinedStoreId, that: that}, true); }else{ that.getAllStores(lat, lng, that.storesToSelectField, { store_id:predefinedStoreId, that: that}, true); }}); }else{ that.getAllStores(lat, lng, that.storesToSelectField, { store_id:predefinedStoreId, that: that}, true); }}, watchFormAddressField:function(){ var that=this; var addressField=$(this.settings.store_locator_form_customer_address); addressField.on('focusout', function(e){ var $this=$(this); var val=$this.val() that.loadFormStores(); }); }, watchFormSelectField:function (){ var that=this; var storeSelectField=$(this.settings.store_locator_form_store_select); var dataName, dataValue; storeSelectField.on('change', function(e){ var $this=$(this); var selected=storeSelectField.find(':selected'); var val=$this.val() var possibleData=[ 'name', 'address', 'zip', 'city', 'country', 'region', 'telephone', 'mobile', 'fax', 'email', 'website', ] $(possibleData).each(function(i, index){ var dataName=index; var dataValue=selected.data(dataName); if(typeof dataValue!=='undefined'){ dataValue=dataValue.toString(); } if(that.isEmpty(dataValue)){ dataValue=""; } var inputField=$('input[name="store_locator_form_store_' + dataName + '"]'); if(inputField.length > 0){ inputField.val(dataValue); } var infoField=$('.store_locator_store_info_' + dataName); if(infoField.length > 0){ if(dataName=="telephone"||dataValue=="mobile"){ dataValue='' + dataValue + ''; } infoField.html(dataValue); }}); }); }, getAllStores: function(lat, lng, callback, options, contactform){ var that=this; jQuery.ajax({ url: that.settings.ajax_url, type: 'post', dataType: 'JSON', data: { action: 'get_all_stores', lat: lat, lng: lng, contactform: contactform, }, success:function(response){ callback(response, options); }, error: function(jqXHR, textStatus, errorThrown){ alert('An Error Occured: ' + jqXHR.status + ' ' + errorThrown + '! Please contact System Administrator!'); }}); }, initFormAutocomplete: function(){ var that=this; var addressField=$(this.settings.store_locator_form_customer_address); var countryRestrict=this.settings.autocompleteCountryRestrict; var type=this.settings.autocompleteType; var map=this.map; if(!addressField){ return; } var autocompleteOptions={}; if(!that.isEmpty(countryRestrict)){ autocompleteOptions.componentRestrictions={'country':countryRestrict.split(',') };} if(!that.isEmpty(type)){ autocompleteOptions.types=[type]; }else{ autocompleteOptions.types=['geocode']; } var autocomplete=new google.maps.places.Autocomplete(addressField[0], autocompleteOptions); autocomplete.addListener('place_changed', function(e){ var place=autocomplete.getPlace(); if(!that.isEmpty(place.formatted_address)){ addressField.val(place.formatted_address).trigger('focusout'); }else{ addressField.val(place.name).trigger('focusout'); }}); }, storesToSelectField: function(stores, options){ var that=options.that; var store_id=options.store_id var storeSelectField=$(that.settings.store_locator_form_store_select); var html=''; var storesLength=Object.keys(stores).length; var i=0; var store; var selected; var data; var disabled; if(storesLength > 0){ for (i; i < storesLength; i++){ store=stores[i]; selected=""; if(store.ID==store_id){ selected='selected="selected"'; } data=""; if(!that.isEmpty(store.na)){ data +=' data-name="' + store.na + '"'; if(!that.isEmpty(store.distance)){ store.distance=parseFloat(store.distance).toFixed(2); store.na=store.na + ' (' + store.distance + ' ' + that.settings.mapDistanceUnit + ')'; }} if(!that.isEmpty(store.st)){ data +=' data-address="' + store.st + '"'; } if(!that.isEmpty(store.zp)){ data +=' data-zip="' + store.zp + '"'; } if(!that.isEmpty(store.ct)){ data +=' data-city="' + store.ct + '"'; } if(!that.isEmpty(store.co)){ data +=' data-country="' + store.co + '"'; } if(!that.isEmpty(store.rg)){ data +=' data-region="' + store.rg + '"'; } if(!that.isEmpty(store.te)){ data +=' data-telephone="' + store.te + '"'; } if(!that.isEmpty(store.mo)){ data +=' data-mobile="' + store.mo + '"'; } if(!that.isEmpty(store.fa)){ data +=' data-fax="' + store.fa + '"'; } if(!that.isEmpty(store.em)){ data +=' data-email="' + store.em + '"'; } if(!that.isEmpty(store.we)){ data +=' data-website="' + store.we + '"'; } html +=''; }} storeSelectField.html(html).trigger('change'); }, initEmbeddedSearch:function(){ var that=this; var addressField=$(this.settings.store_locator_address_field); var countryRestrict=this.settings.autocompleteCountryRestrict; var type=this.settings.autocompleteType; var map=this.map; if(!addressField){ return; } var autocompleteOptions={}; if(!that.isEmpty(countryRestrict)){ autocompleteOptions.componentRestrictions={'country':countryRestrict.split(',') };} if(!that.isEmpty(type)){ autocompleteOptions.types=[type]; }else{ autocompleteOptions.types=['geocode']; } var autocomplete=new google.maps.places.Autocomplete(addressField[0], autocompleteOptions); autocomplete.addListener('place_changed', function(e){ var place=autocomplete.getPlace(); if(!that.isEmpty(place.formatted_address)){ addressField.val(place.formatted_address).trigger('focusout'); }else{ addressField.val(place.name).trigger('focusout'); }}); var store_locator_get_my_position=$(this.settings.store_locator_get_my_position); store_locator_get_my_position.on('click', function(e){ e.preventDefault(); if(navigator.geolocation){ var options={ enableHighAccuracy: true, timeout: 5000, maximumAge: 0 }; navigator.geolocation.getCurrentPosition(function(position){ if(addressField.val()===""){ var currentPosition=new google.maps.LatLng(position.coords.latitude, position.coords.longitude); that.currentPosition=currentPosition; that.lat=currentPosition.lat(); that.lng=currentPosition.lng(); that.geocodeLatLng(function(address){ addressField.val(address); }); }}, function(error){ console.log(error); }, options); }}); if(that.settings.searchBoxAutolocate==="1"){ store_locator_get_my_position.trigger('click'); }}, isInfoWindowOpen:function(infoWindow){ var map=infoWindow.getMap(); return (map!==null&&typeof map!=="undefined"); }, buildReplaceState:function(){ var that=this; var address=$(that.settings.store_locator_address_field).val(); var categories=that.categories; var filter=that.filter; var radius=that.radius; var queryCheck=that.currentURL.split('?'); if(queryCheck.length > 1&&queryCheck[1]!==''){ var url=that.currentURL + '&'; }else{ var url=that.currentURL + '?'; } var url=queryCheck[0] + '?'; var tmp=""; if(!that.isEmpty(address)){ tmp +='location=' + address; } if(categories[0]){ if(tmp==""){ tmp +='category=' + categories[0]; }else{ tmp +='&category=' + categories[0]; }} if(radius){ if(tmp==""){ tmp +='radius=' + radius; }else{ tmp +='&radius=' + radius; }} if(filter){ var filterLoop=0; $.each(filter, function(i, index){ if(filterLoop==0&&tmp==""){ tmp +='filter[]=' + index; }else{ tmp +='&filter[]=' + index; } filterLoop++; }); } window.history.replaceState('test', 'Store Locator', url + tmp); }, isEmpty: function(obj){ if(obj==null) return true; if(obj.length > 0) return false; if(obj.length===0) return true; for (var key in obj){ if(hasOwnProperty.call(obj, key)) return false; } return true; }, sprintf: function parse(str){ var args=[].slice.call(arguments, 1), i=0; return str.replace(/%s/g, function(){ return args[i++]; }); }, getCookie: function(cname){ var name=cname + "="; var ca=document.cookie.split(';'); for(var i=0; it&&(t=n)}s(this).closest(".is-menu").find("form").animate({width:t+"px"},function(){s(this).closest(".is-menu").find("button.is-search-submit").show()})}else s(this).closest(".is-menu").hasClass("popup")&&(s("#is-popup-wrapper").fadeIn(),s('#is-popup-wrapper form input[type="text"], #is-popup-wrapper form input[type="search"]').focus());(s(this).closest(".is-menu").hasClass("sliding")||s(this).closest(".is-menu").hasClass("full-width-menu"))&&(s(this).closest(".is-menu").addClass("open"),s(this).closest(".is-menu").find('form input[type="search"], form input[type="text"]').focus()),s(this).closest(".is-menu").find('form input[type="search"], form input[type="text"]').focus()}),s("#is-popup-wrapper").on("click",function(e){s(e.target).closest("form").length||s("#is-popup-wrapper, .is-ajax-search-result, .is-ajax-search-details").fadeOut()}),"undefined"!=typeof IvorySearchVars&&void 0!==IvorySearchVars.is_analytics_enabled)&&ivory_search_analytics(void 0!==IvorySearchVars.is_id?IvorySearchVars.is_id:"Default",void 0!==IvorySearchVars.is_label?IvorySearchVars.is_label:"",void 0!==IvorySearchVars.is_cat?IvorySearchVars.is_cat:"");window.matchMedia("(max-width: 1024px)").matches&&s(".is-menu a").attr("href",""),s(window).resize(function(){window.matchMedia("(max-width: 1024px)").matches&&s(".is-menu a").attr("href","")})}),s(document).keyup(function(e){27===e.keyCode&&s("#is-popup-wrapper, .is-ajax-search-result, .is-ajax-search-details").hide()}),s('.is-menu form input[type="search"], .is-menu form input[type="text"]').on("click",function(s){return s.stopPropagation(),!1}),s("form.is-search-form, form.search-form").on("mouseover",function(e){s(this).next(".is-link-container").length&&s(this).append(s(this).next(".is-link-container").remove())}),s(window).click(function(e){0===e.button&&0===s(e.target).closest(".is-search-input").length&&0===s(e.target).closest(".is-search-submit").length&&0===s(e.target).closest(".is-ajax-search-result").length&&0===s(e.target).closest(".is-ajax-search-details").length&&(s(".is-menu").hasClass("open")?(s(".is-menu button.is-search-submit").hide(),s(".is-menu form").animate({width:"0"},400,function(){s(".is-menu").removeClass("active-search"),s(".is-menu").removeClass("open"),s(".is-menu-wrapper").removeClass("is-expanded")}),s(".is-ajax-search-result, .is-ajax-search-details").hide()):s(".is-menu").hasClass("is-dropdown")&&(s(".is-menu form").fadeOut(),s(".is-ajax-search-result, .is-ajax-search-details").hide()))})}(jQuery); !function(d,l){"use strict";var e=!1,o=!1;if(l.querySelector)if(d.addEventListener)e=!0;if(d.wp=d.wp||{},!d.wp.receiveEmbedMessage)if(d.wp.receiveEmbedMessage=function(e){var t=e.data;if(t)if(t.secret||t.message||t.value)if(!/[^a-zA-Z0-9]/.test(t.secret)){var r,a,i,s,n,o=l.querySelectorAll('iframe[data-secret="'+t.secret+'"]'),c=l.querySelectorAll('blockquote[data-secret="'+t.secret+'"]');for(r=0;r(a||v.height())},_setFocus:function(){(b.st.focus?b.content.find(b.st.focus).eq(0):b.wrap).focus()},_onFocusIn:function(c){return c.target===b.wrap[0]||a.contains(b.wrap[0],c.target)?void 0:(b._setFocus(),!1)},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(l,[b,c,d]),a.each(c,function(c,d){if(void 0===d||d===!1)return!0;if(e=c.split("_"),e.length>1){var f=b.find(p+"-"+e[0]);if(f.length>0){var g=e[1];"replaceWith"===g?f[0]!==d[0]&&f.replaceWith(d):"img"===g?f.is("img")?f.attr("src",d):f.replaceWith(a("").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(p+"-"+c).html(d)})},_getScrollbarSize:function(){if(void 0===b.scrollbarSize){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),b.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return b.scrollbarSize}},a.magnificPopup={instance:null,proto:t.prototype,modules:[],open:function(b,c){return A(),b=b?a.extend(!0,{},b):{},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(c){A();var d=a(this);if("string"==typeof c)if("open"===c){var e,f=u?d.data("magnificPopup"):d[0].magnificPopup,g=parseInt(arguments[1],10)||0;f.items?e=f.items[g]:(e=d,f.delegate&&(e=e.find(f.delegate)),e=e.eq(g)),b._openClick({mfpEl:e},d,f)}else b.isOpen&&b[c].apply(b,Array.prototype.slice.call(arguments,1));else c=a.extend(!0,{},c),u?d.data("magnificPopup",c):d[0].magnificPopup=c,b.addGroup(d,c);return d};var C,D,E,F="inline",G=function(){E&&(D.after(E.addClass(C)).detach(),E=null)};a.magnificPopup.registerModule(F,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){b.types.push(F),w(h+"."+F,function(){G()})},getInline:function(c,d){if(G(),c.src){var e=b.st.inline,f=a(c.src);if(f.length){var g=f[0].parentNode;g&&g.tagName&&(D||(C=e.hiddenClass,D=x(C),C="mfp-"+C),E=f.after(D).detach().removeClass(C)),b.updateStatus("ready")}else b.updateStatus("error",e.tNotFound),f=a("
");return c.inlineElement=f,f}return b.updateStatus("ready"),b._parseMarkup(d,{},c),d}}});var H,I="ajax",J=function(){H&&a(document.body).removeClass(H)},K=function(){J(),b.req&&b.req.abort()};a.magnificPopup.registerModule(I,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content could not be loaded.'},proto:{initAjax:function(){b.types.push(I),H=b.st.ajax.cursor,w(h+"."+I,K),w("BeforeChange."+I,K)},getAjax:function(c){H&&a(document.body).addClass(H),b.updateStatus("loading");var d=a.extend({url:c.src,success:function(d,e,f){var g={data:d,xhr:f};y("ParseAjax",g),b.appendContent(a(g.data),I),c.finished=!0,J(),b._setFocus(),setTimeout(function(){b.wrap.addClass(q)},16),b.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),c.finished=c.loadError=!0,b.updateStatus("error",b.st.ajax.tError.replace("%url%",c.src))}},b.st.ajax.settings);return b.req=a.ajax(d),""}}});var L,M=function(c){if(c.data&&void 0!==c.data.title)return c.data.title;var d=b.st.image.titleSrc;if(d){if(a.isFunction(d))return d.call(b,c);if(c.el)return c.el.attr(d)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'
',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image could not be loaded.'},proto:{initImage:function(){var c=b.st.image,d=".image";b.types.push("image"),w(m+d,function(){"image"===b.currItem.type&&c.cursor&&a(document.body).addClass(c.cursor)}),w(h+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),v.off("resize"+p)}),w("Resize"+d,b.resizeImage),b.isLowIE&&w("AfterChange",b.resizeImage)},resizeImage:function(){var a=b.currItem;if(a&&a.img&&b.st.image.verticalFit){var c=0;b.isLowIE&&(c=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",b.wH-c)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(b.content&&b.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var c=0,d=a.img[0],e=function(f){L&&clearInterval(L),L=setInterval(function(){return d.naturalWidth>0?void b._onImageHasSize(a):(c>200&&clearInterval(L),c++,void(3===c?e(10):40===c?e(50):100===c&&e(500)))},f)};e(1)},getImage:function(c,d){var e=0,f=function(){c&&(c.img[0].complete?(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("ready")),c.hasSize=!0,c.loaded=!0,y("ImageLoadComplete")):(e++,200>e?setTimeout(f,100):g()))},g=function(){c&&(c.img.off(".mfploader"),c===b.currItem&&(b._onImageHasSize(c),b.updateStatus("error",h.tError.replace("%url%",c.src))),c.hasSize=!0,c.loaded=!0,c.loadError=!0)},h=b.st.image,i=d.find(".mfp-img");if(i.length){var j=document.createElement("img");j.className="mfp-img",c.el&&c.el.find("img").length&&(j.alt=c.el.find("img").attr("alt")),c.img=a(j).on("load.mfploader",f).on("error.mfploader",g),j.src=c.src,i.is("img")&&(c.img=c.img.clone()),j=c.img[0],j.naturalWidth>0?c.hasSize=!0:j.width||(c.hasSize=!1)}return b._parseMarkup(d,{title:M(c),img_replaceWith:c.img},c),b.resizeImage(),c.hasSize?(L&&clearInterval(L),c.loadError?(d.addClass("mfp-loading"),b.updateStatus("error",h.tError.replace("%url%",c.src))):(d.removeClass("mfp-loading"),b.updateStatus("ready")),d):(b.updateStatus("loading"),c.loading=!0,c.hasSize||(c.imgHidden=!0,d.addClass("mfp-loading"),b.findImageSize(c)),d)}}});var N,O=function(){return void 0===N&&(N=void 0!==document.createElement("p").style.MozTransform),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a,c=b.st.zoom,d=".zoom";if(c.enabled&&b.supportsTransition){var e,f,g=c.duration,j=function(a){var b=a.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+c.duration/1e3+"s "+c.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,b.css(e),b},k=function(){b.content.css("visibility","visible")};w("BuildControls"+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.content.css("visibility","hidden"),a=b._getItemToZoom(),!a)return void k();f=j(a),f.css(b._getOffset()),b.wrap.append(f),e=setTimeout(function(){f.css(b._getOffset(!0)),e=setTimeout(function(){k(),setTimeout(function(){f.remove(),a=f=null,y("ZoomAnimationEnded")},16)},g)},16)}}),w(i+d,function(){if(b._allowZoom()){if(clearTimeout(e),b.st.removalDelay=g,!a){if(a=b._getItemToZoom(),!a)return;f=j(a)}f.css(b._getOffset(!0)),b.wrap.append(f),b.content.css("visibility","hidden"),setTimeout(function(){f.css(b._getOffset())},16)}}),w(h+d,function(){b._allowZoom()&&(k(),f&&f.remove(),a=null)})}},_allowZoom:function(){return"image"===b.currItem.type},_getItemToZoom:function(){return b.currItem.hasSize?b.currItem.img:!1},_getOffset:function(c){var d;d=c?b.currItem.img:b.st.zoom.opener(b.currItem.el||b.currItem);var e=d.offset(),f=parseInt(d.css("padding-top"),10),g=parseInt(d.css("padding-bottom"),10);e.top-=a(window).scrollTop()-f;var h={width:d.width(),height:(u?d.innerHeight():d[0].offsetHeight)-g-f};return O()?h["-moz-transform"]=h.transform="translate("+e.left+"px,"+e.top+"px)":(h.left=e.left,h.top=e.top),h}}});var P="iframe",Q="//about:blank",R=function(a){if(b.currTemplate[P]){var c=b.currTemplate[P].find("iframe");c.length&&(a||(c[0].src=Q),b.isIE8&&c.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'
',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){b.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(h+"."+P,function(){R()})},getIframe:function(c,d){var e=c.src,f=b.st.iframe;a.each(f.patterns,function(){return e.indexOf(this.index)>-1?(this.id&&(e="string"==typeof this.id?e.substr(e.lastIndexOf(this.id)+this.id.length,e.length):this.id.call(this,e)),e=this.src.replace("%id%",e),!1):void 0});var g={};return f.srcAction&&(g[f.srcAction]=e),b._parseMarkup(d,g,c),b.updateStatus("ready"),d}}});var S=function(a){var c=b.items.length;return a>c-1?a-c:0>a?c+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=b.st.gallery,e=".mfp-gallery";return b.direction=!0,c&&c.enabled?(f+=" mfp-gallery",w(m+e,function(){c.navigateByImgClick&&b.wrap.on("click"+e,".mfp-img",function(){return b.items.length>1?(b.next(),!1):void 0}),d.on("keydown"+e,function(a){37===a.keyCode?b.prev():39===a.keyCode&&b.next()})}),w("UpdateStatus"+e,function(a,c){c.text&&(c.text=T(c.text,b.currItem.index,b.items.length))}),w(l+e,function(a,d,e,f){var g=b.items.length;e.counter=g>1?T(c.tCounter,f.index,g):""}),w("BuildControls"+e,function(){if(b.items.length>1&&c.arrows&&!b.arrowLeft){var d=c.arrowMarkup,e=b.arrowLeft=a(d.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(s),f=b.arrowRight=a(d.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(s);e.click(function(){b.prev()}),f.click(function(){b.next()}),b.container.append(e.add(f))}}),w(n+e,function(){b._preloadTimeout&&clearTimeout(b._preloadTimeout),b._preloadTimeout=setTimeout(function(){b.preloadNearbyImages(),b._preloadTimeout=null},16)}),void w(h+e,function(){d.off(e),b.wrap.off("click"+e),b.arrowRight=b.arrowLeft=null})):!1},next:function(){b.direction=!0,b.index=S(b.index+1),b.updateItemHTML()},prev:function(){b.direction=!1,b.index=S(b.index-1),b.updateItemHTML()},goTo:function(a){b.direction=a>=b.index,b.index=a,b.updateItemHTML()},preloadNearbyImages:function(){var a,c=b.st.gallery.preload,d=Math.min(c[0],b.items.length),e=Math.min(c[1],b.items.length);for(a=1;a<=(b.direction?e:d);a++)b._preloadItem(b.index+a);for(a=1;a<=(b.direction?d:e);a++)b._preloadItem(b.index-a)},_preloadItem:function(c){if(c=S(c),!b.items[c].preloaded){var d=b.items[c];d.parsed||(d=b.parseEl(c)),y("LazyLoad",d),"image"===d.type&&(d.img=a('').on("load.mfploader",function(){d.hasSize=!0}).on("error.mfploader",function(){d.hasSize=!0,d.loadError=!0,y("LazyLoadError",d)}).attr("src",d.src)),d.preloaded=!0}}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=b.st.retina,c=a.ratio;c=isNaN(c)?c():c,c>1&&(w("ImageHasSize."+U,function(a,b){b.img.css({"max-width":b.img[0].naturalWidth/c,width:"100%"})}),w("ElementParse."+U,function(b,d){d.src=a.replaceSrc(d,c)}))}}}}),A()}); document.documentElement.className+=" js_active ",document.documentElement.className+="ontouchstart"in document.documentElement?" vc_mobile ":" vc_desktop ",function(){for(var prefix=["-webkit-","-moz-","-ms-","-o-",""],i=0;i=$tabs.tabs("length")&&(index=0),$tabs.tabs("select",index)):(index=$tabs.tabs("option","active"),length=$tabs.find(".wpb_tab").length,index=jQuery(this).parent().hasClass("wpb_next_slide")?length<=index+1?0:index+1:index-1<0?length-1:index-1,$tabs.tabs("option","active",index))})})}}),"function"!=typeof window.vc_accordionBehaviour&&(window.vc_accordionBehaviour=function(){jQuery(".wpb_accordion").each(function(index){var $tabs,active_tab,collapsible,$this=jQuery(this);$this.attr("data-interval"),collapsible=!1===(active_tab=!isNaN(jQuery(this).data("active-tab"))&&0 div > h3",autoHeight:!1,heightStyle:"content",active:active_tab,collapsible:collapsible,navigation:!0,activate:vc_accordionActivate,change:function(event,ui){void 0!==jQuery.fn.isotope&&ui.newContent.find(".isotope").isotope("layout"),vc_carouselBehaviour(ui.newPanel)}}),!0===$this.data("vcDisableKeydown")&&($tabs.data("uiAccordion")._keydown=function(){})})}),"function"!=typeof window.vc_teaserGrid&&(window.vc_teaserGrid=function(){var layout_modes={fitrows:"fitRows",masonry:"masonry"};jQuery(".wpb_grid .teaser_grid_container:not(.wpb_carousel), .wpb_filtered_grid .teaser_grid_container:not(.wpb_carousel)").each(function(){var $container=jQuery(this),$thumbs=$container.find(".wpb_thumbnails"),layout_mode=$thumbs.attr("data-layout-mode");$thumbs.isotope({itemSelector:".isotope-item",layoutMode:void 0===layout_modes[layout_mode]?"fitRows":layout_modes[layout_mode]}),$container.find(".categories_filter a").data("isotope",$thumbs).on("click",function(e){e&&e.preventDefault&&e.preventDefault();var $thumbs=jQuery(this).data("isotope");jQuery(this).parent().parent().find(".active").removeClass("active"),jQuery(this).parent().addClass("active"),$thumbs.isotope({filter:jQuery(this).attr("data-filter")})}),jQuery(window).bind("load resize",function(){$thumbs.isotope("layout")})})}),"function"!=typeof window.vc_carouselBehaviour&&(window.vc_carouselBehaviour=function($parent){($parent?$parent.find(".wpb_carousel"):jQuery(".wpb_carousel")).each(function(){var $this=jQuery(this);if(!0!==$this.data("carousel_enabled")&&$this.is(":visible")){$this.data("carousel_enabled",!0);getColumnsCount(jQuery(this));jQuery(this).hasClass("columns_count_1")&&0;var carousel_li=jQuery(this).find(".wpb_thumbnails-fluid li");carousel_li.css({"margin-right":carousel_li.css("margin-left"),"margin-left":0});var fluid_ul=jQuery(this).find("ul.wpb_thumbnails-fluid");fluid_ul.width(fluid_ul.width()+300),jQuery(window).on("resize",function(){screen_size!=(screen_size=getSizeName())&&window.setTimeout(function(){location.reload()},20)})}})}),"function"!=typeof window.vc_slidersBehaviour&&(window.vc_slidersBehaviour=function(){jQuery(".wpb_gallery_slides").each(function(index){var $imagesGrid,this_element=jQuery(this);if(this_element.hasClass("wpb_slider_nivo")){var sliderTimeout=1e3*this_element.attr("data-interval");0===sliderTimeout&&(sliderTimeout=9999999999),this_element.find(".nivoSlider").nivoSlider({effect:"boxRainGrow,boxRain,boxRainReverse,boxRainGrowReverse",slices:15,boxCols:8,boxRows:4,animSpeed:800,pauseTime:sliderTimeout,startSlide:0,directionNav:!0,directionNavHide:!0,controlNav:!0,keyboardNav:!1,pauseOnHover:!0,manualAdvance:!1,prevText:"Prev",nextText:"Next"})}else this_element.hasClass("wpb_image_grid")&&(jQuery.fn.imagesLoaded?$imagesGrid=this_element.find(".wpb_image_grid_ul").imagesLoaded(function(){$imagesGrid.isotope({itemSelector:".isotope-item",layoutMode:"fitRows"})}):this_element.find(".wpb_image_grid_ul").isotope({itemSelector:".isotope-item",layoutMode:"fitRows"}))})}),"function"!=typeof window.vc_prettyPhoto&&(window.vc_prettyPhoto=function(){try{jQuery&&jQuery.fn&&jQuery.fn.prettyPhoto&&jQuery('a.prettyphoto, .gallery-icon a[href*=".jpg"]').prettyPhoto({animationSpeed:"normal",hook:"data-rel",padding:15,opacity:.7,showTitle:!0,allowresize:!0,counter_separator_label:"/",hideflash:!1,deeplinking:!1,modal:!1,callback:function(){-1
')}),vc_initVideoBackgrounds(),callSkrollInit=!1,window.vcParallaxSkroll&&window.vcParallaxSkroll.destroy(),$(".vc_parallax-inner").remove(),$("[data-5p-top-bottom]").removeAttr("data-5p-top-bottom data-30p-top-bottom"),$("[data-vc-parallax]").each(function(){var skrollrSize,skrollrStart,$parallaxElement,parallaxImage,youtubeId;callSkrollInit=!0,"on"===$(this).data("vcParallaxOFade")&&$(this).children().attr("data-5p-top-bottom","opacity:0;").attr("data-30p-top-bottom","opacity:1;"),skrollrSize=100*$(this).data("vcParallax"),($parallaxElement=$("
").addClass("vc_parallax-inner").appendTo($(this))).height(skrollrSize+"%"),parallaxImage=$(this).data("vcParallaxImage"),(youtubeId=vcExtractYoutubeId(parallaxImage))?insertYoutubeVideoAsBackground($parallaxElement,youtubeId):void 0!==parallaxImage&&$parallaxElement.css("background-image","url("+parallaxImage+")"),skrollrStart=-(skrollrSize-100),$parallaxElement.attr("data-bottom-top","top: "+skrollrStart+"%;").attr("data-top-bottom","top: 0%;")}),callSkrollInit&&window.skrollr&&(vcSkrollrOptions={forceHeight:!1,smoothScrolling:!1,mobileCheck:function(){return!1}},window.vcParallaxSkroll=skrollr.init(vcSkrollrOptions),window.vcParallaxSkroll)}),"function"!=typeof window.vc_gridBehaviour&&(window.vc_gridBehaviour=function(){jQuery.fn.vcGrid&&jQuery("[data-vc-grid]").vcGrid()}),"function"!=typeof window.getColumnsCount&&(window.getColumnsCount=function(el){for(var find=!1,i=1;!1===find;){if(el.hasClass("columns_count_"+i))return find=!0,i;i++}});var screen_size=getSizeName();function getSizeName(){var screen_w=jQuery(window).width();return 1170
').find(".inner");new YT.Player($container[0],{width:"100%",height:"100%",videoId:youtubeId,playerVars:{playlist:youtubeId,iv_load_policy:3,enablejsapi:1,disablekb:1,autoplay:1,controls:0,showinfo:0,rel:0,loop:1,wmode:"transparent"},events:{onReady:function(event){event.target.mute().setLoop(!0)}}}),vcResizeVideoBackground($element),jQuery(window).bind("resize",function(){vcResizeVideoBackground($element)})}),"function"!=typeof window.vcResizeVideoBackground&&(window.vcResizeVideoBackground=function($element){var iframeW,iframeH,marginLeft,marginTop,containerW=$element.innerWidth(),containerH=$element.innerHeight();containerW/containerH<16/9?(iframeW=containerH*(16/9),iframeH=containerH,marginLeft=-Math.round((iframeW-containerW)/2)+"px",marginTop=-Math.round((iframeH-containerH)/2)+"px"):(iframeH=(iframeW=containerW)*(9/16),marginTop=-Math.round((iframeH-containerH)/2)+"px",marginLeft=-Math.round((iframeW-containerW)/2)+"px"),iframeW+="px",iframeH+="px",$element.find(".vc_video-bg iframe").css({maxWidth:"1000%",marginLeft:marginLeft,marginTop:marginTop,width:iframeW,height:iframeH})}),"function"!=typeof window.vcExtractYoutubeId&&(window.vcExtractYoutubeId=function(url){if(void 0===url)return!1;var id=url.match(/(?:https?:\/{2})?(?:w{3}\.)?youtu(?:be)?\.(?:com|be)(?:\/watch\?v=|\/)([^\s&]+)/);return null!==id&&id[1]}),"function"!=typeof window.vc_googleMapsPointer&&(window.vc_googleMapsPointer=function(){var $=window.jQuery,$wpbGmapsWidget=$(".wpb_gmaps_widget");$wpbGmapsWidget.on("click",function(){$("iframe",this).css("pointer-events","auto")}),$wpbGmapsWidget.on("mouseleave",function(){$("iframe",this).css("pointer-events","none")}),$(".wpb_gmaps_widget iframe").css("pointer-events","none")}),"function"!=typeof window.vc_setHoverBoxPerspective&&(window.vc_setHoverBoxPerspective=function(hoverBox){hoverBox.each(function(){var $this=jQuery(this),perspective=4*$this.width()+"px";$this.css("perspective",perspective)})}),"function"!=typeof window.vc_setHoverBoxHeight&&(window.vc_setHoverBoxHeight=function(hoverBox){hoverBox.each(function(){var $this=jQuery(this),hoverBoxInner=$this.find(".vc-hoverbox-inner");hoverBoxInner.css("min-height",0);var frontHeight=$this.find(".vc-hoverbox-front-inner").outerHeight(),backHeight=$this.find(".vc-hoverbox-back-inner").outerHeight(),hoverBoxHeight=backHeight